#pragma once

#include <Engine/Foundation/Object.h>
#include <Engine/Math/Vec2I.h>
#include <Engine/Math/Vec3.h>
#include <Engine/Misc/Color.h>
#include <Engine/Renderer/Shaders/Constants.h>

namespace fastbird
{
	class DebugHud : public Object
	{
	public:
		DebugHud();
		virtual ~DebugHud();

		struct DebugText
		{
			Vec2I mPos;
			std::wstring mText;
			Color mColor;
			float mSize;
		};

		//--------------------------------------------------------------------
		// IObject
		//--------------------------------------------------------------------
		virtual void Render();
		virtual void PreRender();
		virtual void PostRender();

		//--------------------------------------------------------------------
		// Own
		//--------------------------------------------------------------------
		void QueueText(const Vec2I& pos, WCHAR* text, const Vec3& color, float size);

	private:
		std::vector<DebugText> mTexts;
		OBJECT_CONSTANTS mObjectConstants;
	};
}